/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estsapp.controladores.CargarModulosGeneralesDeDemanda;


import estsapp.controladores.Controlador;
import estsapp.controladores.ControladorPrincipal;
import estsapp.controladores.FabricaControladores;
import estsapp.entidades.ParametrosGenerales;
import estsapp.expertos.ExpertoDemanda;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import persistencia.Conexion;
import persistencia.exceptions.ExcepcionFachada;

/**
 *
 * @author Juan
 */
public class ControladorParametros implements Controlador {

    PantallaParametros pantalla;
    ExpertoDemanda experto;
    ParametrosGenerales parametro;
    private boolean iniciado;

    public ControladorParametros() {
        pantalla = new PantallaParametros();
        experto = new ExpertoDemanda();

        parametro = experto.obtenerParametrosGenerales();



        cargarPantalla();
        cargarAccionesBotones();

    }

    @Override
    public JInternalFrame getPantalla() {
        return pantalla;
    }

    @Override
    public void iniciar() {
        if (!iniciado) {
            ((ControladorPrincipal) FabricaControladores.getInstance().getControlador(FabricaControladores.controladoresNombre.PRINCIPAL)).agregarPantallaInterna(pantalla);
            iniciado = true;
        } else {
            pantalla.setVisible(true);
        }

    }

    private void cargarAccionesBotones() {
        pantalla.getBtnSalir().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                pantalla.setVisible(false);
            }
        });
        pantalla.getBtnGuardar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                guardar();
            }
        });
    }

    private void guardar() {
        try {
            Conexion.getInstancia().iniciarTX();
            experto.guardarParametros(parametro);
            Conexion.getInstancia().confirmarTx();
            JOptionPane.showMessageDialog(null, "Parametros Generales Guardados");
        } catch (ExcepcionFachada ex) {
            Conexion.getInstancia().deshacerTx();
            ex.printStackTrace();
        }
    }

    private void cargarPantalla() {
        if (parametro != null) {
            pantalla.getTextoCantidadPeriodos().setText(parametro.getCantidadPeriodos().toString());
            pantalla.getTextoErrorAceptable().setText(parametro.getErrorAceptable().toString());
            pantalla.getComboMetodoError().setSelectedItem(parametro.getMetodoErrorSeleccionado());
        }

    }
}
